/*!
 * mars
 * Copyright(c) 2015 huangbinglong
 * MIT Licensed
 */

'use strict';

var __message;
var __picUrls = [];

var preloader = new mOxie.Image();

// 设置野狗
var ref = new Wilddog("https://wild-snake-1838.wilddogio.com/littleV");

// 设置上传

var uploader = Qiniu.uploader({
    runtimes: 'html5,flash,html4',    //上传模式,依次退化
    browse_button: 'addImages',       //上传选择的点选按钮，**必需**
    uptoken_url: './uploadToken.json',            //Ajax请求upToken的Url，**强烈建议设置**（服务端提供）
    // downtoken_url: '/downtoken',
    // Ajax请求downToken的Url，私有空间时使用,JS-SDK将向该地址POST文件的key和domain,服务端返回的JSON必须包含`url`字段，`url`值为该文件的下载地址
    // uptoken : '<Your upload token>', //若未指定uptoken_url,则必须指定 uptoken ,uptoken由其他程序生成
    // unique_names: true, // 默认 false，key为文件名。若开启该选项，SDK会为每个文件自动生成key（文件名）
    // save_key: true,   // 默认 false。若在服务端生成uptoken的上传策略中指定了 `sava_key`，则开启，SDK在前端将不对key进行任何处理
    domain: 'http://7xpk27.com1.z0.glb.clouddn.com/',   //bucket 域名，下载资源时用到，**必需**
    get_new_uptoken: false,  //设置上传文件的时候是否每次都重新获取新的token
    max_file_size: '10mb',           //最大文件体积限制
    flash_swf_url: 'js-sdk/demo/js/plupload/Moxie.swf',  //引入flash,相对路径
    max_retries: 3,                   //上传失败最大重试次数
    chunk_size: '4mb',                //分块上传时，每片的体积
    filters: [
        {title: "Image files", extensions: "jpg,gif,png"}
    ],
    init: {
        'FilesAdded': function (up, files) {
            plupload.each(files, function (file) {
                // 文件添加进队列后,处理相关的事情
                showImagePreview(file);
            });
        },
        'BeforeUpload': function (up, file) {
            // 每个文件上传前,处理相关的事情
        },
        'UploadProgress': function (up, file) {
            // 每个文件上传时,处理相关的事情
        },
        'FileUploaded': function (up, file, info) {
             var domain = up.getOption('domain');
             var res = JSON.parse(info);
             var sourceLink = domain + res.key;
            __picUrls.push(sourceLink);
        },
        'Error': function (up, err, errTip) {
            //上传出错时,处理相关的事情
        },
        'UploadComplete': function () {
            //队列文件处理完毕后,处理相关的事情
            if (__message && __picUrls) {
                ref.push({
                    desc:__message,
                    picUrls:__picUrls,
                    createDate:new Date().getTime()
                });
                __message = undefined;
                __picUrls = [];
                $("#message").val("");
                $("#showPv").html("");
            }
            hideMask();
        },
        'Key': function (up, file) {
            'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
                var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
                return v.toString(16);
            });
        }
    }
});

// 预览图片
function showImagePreview(file) {

    // 显示图片
    function showImage(src) {
        $("#showPv").prepend('<div class="col-md-3"><img src="'+src+'" width="100%"></div>');
    }
    if (!file || !/image\//.test(file.type)) return;
    if (file.type == 'image/gif') {
        var fr = new mOxie.FileReader();
        fr.onload = function () {
            showImage(fr.result);
            fr.destroy();
            fr = null;
        };
        fr.readAsDataURL(file.getSource());
    } else {
        var preloader = new mOxie.Image();
        preloader.onload = function () {
            var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg',
                80
            ) :
                preloader.getAsDataURL();
            showImage(imgsrc);
            preloader.destroy();
            preloader = null;
        };
        preloader.load(file.getSource());
    }
}

function post() {
    __message = $("#message").val().trim();
    if (!__message) {
        alert("没看到有个文本框吗？！");
        return;
    }
    showMask();
    if (uploader.files && uploader.files.length > 0) {
        uploader.start();
    } else {
        ref.push({
            desc:__message,
            createDate:new Date().getTime()
        });
        __message = undefined;
        $("#message").val("");
        hideMask();
    }
}

// END 设置上传

// 遮蔽层
//显示遮罩层
function showMask(){
    $("#mask").css("height",$(document).height());
    $("#mask").css("width",$(document).width());
    $("#mask").show();
}
//隐藏遮罩层
function hideMask(){

    $("#mask").hide();
}

// 格式化时间
Date.prototype.Format = function(fmt)
{ //author: meizz
    var o = {
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //日
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //分
        "s+" : this.getSeconds(),                 //秒
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    };
    if(/(y+)/.test(fmt))
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
        if(new RegExp("("+ k +")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
    return fmt;
}

// 监控新数据
ref.on("child_added", function (snapshot) {
    var newPost = snapshot.val();
    var picUrls = newPost.picUrls;
    var createDate = newPost.createDate || new Date().getTime();
    var desc = $("<div/>").html(newPost.desc).text();
    var html = '<div style="text-align: center; font-size:12px;margin-top: 6px;">'+new Date(createDate).Format("yyyy-MM-dd hh:mm:ss")+'</div>' +
        '<div style="border:1px solid #fff;padding: 8px;max-width: 600px;margin-left: auto;margin-right: auto;margin-top: 2px;margin-bottom: 15px;">' +
        '<div style="text-align: left;font-size: 15px;margin-bottom: 3px;">' + desc + '</div>';
    if (picUrls && picUrls.length > 0) {
        for (var i = 0; i < picUrls.length; i++) {
            if (i != picUrls.length - 1 && picUrls.length != 1) {
                html += '<img class="lazy" data-src="' + picUrls[i] + '" alt="' + desc + '" width="100%" style="margin-bottom: 5px;">';
            } else {
                html += '<img class="lazy" data-src="' + picUrls[i] + '" alt="' + desc + '" width="100%"">';
            }
        }

    }
    html += "</div>";
    $('#contens').prepend(html);
    $(window).lazyLoadXT();
});
